# 封装mysql相关操作
import pymysql as pymysql


class PyMySQLUtils:

    # 构造函数 初始数据库连接
    def __init__(self):
        # 打开数据连接
        self.conn = pymysql.Connect(host='192.168.200.123',
                                    port=3306,
                                    user='root',
                                    passwd="123456",
                                    db='learn_member',
                                    charset='utf8')
        # 获取操作游标
        self.cursor = self.conn.cursor()

    # 查询多条数据
    def fetchall(self, sql):
        # 执行sql语言
        self.cursor.execute(sql)
        # 获取多条数据
        results = self.cursor.fetchall()
        return results
        # 查询多条数据

    # 获取单条数据
    def fetchone(self, sql):
        # 执行sql语言
        self.cursor.execute(sql)
        # 获取多条数据
        result = self.cursor.fetchone()
        return result

    # 添加删除更新操作事务操作
    def execute(self, sql):
        try:
            # 执行sql
            self.cursor.execute(sql)
            # commit
            self.conn.commit()
        except Exception as e:
            print(e)
            # 发生异常需要回滚
            self.conn.rollback()

    # 关闭连接
    def close(self):
        # 关闭游标
        if self.cursor:
            self.cursor.close()
        # 关闭链接
        if self.conn:
            self.conn.close()
